/*
  学习目标：掌握泛型函数的使用
  作用： 提高函数的可复用性
  语法: function<T>(a: T): T{}

  使用语法：
    1. 简写： 函数名()
    2. 完整： 函数名<泛型>()  - 类型推断不准确时，使用完整写法
*/

// 创建泛型函数
function add<T>(a: T): T {
  return a;
}

// 👍使用泛型函数-简写
add("1");
add(2).toFixed(2);
add([]);

// 完整写法
// add<string>(1);

type Person = {
  name: string;
  age: number;
  gender?: "男" | "女";
  sayHello?: () => void;
};

// 完整写法
add<Person>({ name: "zs", age: 30 });
